﻿/******************************************************************************* 
  Copyright (C), 1988-2020, zeno Tech. Co., Ltd.
  Description:  MISC模块, 包含无法明确归类的接口
  Function List:   
*******************************************************************************/
#ifndef SYS_MISC_H 
#define SYS_MISC_H  

#ifdef __cplusplus
extern "C" {
#endif

/*=============================================================================
                                 Includes                                  
==============================================================================*/


/*=============================================================================
                               Macro Definition
==============================================================================*/


/*=============================================================================
                        Local Structures and Typedef 
==============================================================================*/

/*=============================================================================
                             extern  Variables                                  
==============================================================================*/

/*=============================================================================
                             Function Definition                                  
==============================================================================*/

/*******************************************************************************
  Function:     SYS_GetCmdLineCount
  Description:  执行命令行并获取返回行数
  Input:        - pCmd: 命令行
  Output:       无
  Return:       >=0: 命令返回行数
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetCmdLineCount(char *pCmd);


/*******************************************************************************
  Function:     SYS_GetCmdOutput
  Description:  执行命令行并获取返回值
  Input:        - pCmd: 命令行
                - nbytes: 返回值缓存长度
                - pNum: 最大返回值行数
  Output:       - pList: 返回值数组
                - pNum: 实际返回值行数
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetCmdOutput(char *pCmd, char *pList, int nbytes, int *pNum);


/*******************************************************************************
  Function:     SYS_GetCmdOneOutput
  Description:  执行命令行并获取第一行返回值
  Input:        - pCmd: 命令行
                - nbytes: 返回值缓存长度
  Output:       - pList: 返回值数组
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetCmdOneOutput(char *pCmd, char *pLine, int nbytes);


/*******************************************************************************
  Function:     SYS_GetFileOutputMatchWithSplitAndRange
  Description:  对文件中的内容做正则表达式匹配，并获取返回值
  Input:        - pFileName: 文件名
                - nbytes: 返回值缓存长度
                - pNum: 最大返回值行数
                - pRegex: 正则表达式
                - pRegexBegin: 正则表达式前缀
                - pRegexEnd: 正则表达式后缀
                - split: 分隔符
  Output:       - pList: 返回值数组
                - pNum: 实际返回值行数
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetFileOutputMatchWithSplitAndRange(char *pFileName, char *pList, 
                                            int nbytes, int *pNum, 
		                                    char *pRegex, const char split, 
		                                    char *pRegexBegin, char *pRegexEnd);



/*******************************************************************************
  Function:     SYS_GetFileOutputMatchWithSplit
  Description:  对文件中的内容做正则表达式匹配，并获取返回值
  Input:        - pFileName: 文件名
                - nbytes: 返回值缓存长度
                - pNum: 最大返回值行数
                - pRegex: 正则表达式
                - split: 分隔符
  Output:       - pList: 返回值数组
                - pNum: 实际返回值行数
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetFileOutputMatchWithSplit(char *pFileName, char *pList, 
                                    int nbytes, int* pNum, 
		                            char *pRegex, const char split);




/*******************************************************************************
  Function:     SYS_GetFileOutputMatch
  Description:  对文件中的内容做正则表达式匹配，并获取返回值
  Input:        - pFileName: 文件名
                - nbytes: 返回值缓存长度
                - pNum: 最大返回值行数
                - pRegex: 正则表达式
  Output:       - pList: 返回值数组
                - pNum: 实际返回值行数
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetFileOutputMatch(char *pFileName, char *pList, 
                           int nbytes, int *pNum, char *pRegex);



/*******************************************************************************
  Function:     SYS_GetFileOneOutputMatch
  Description:  对文件中的内容做正则表达式匹配，并获取第一行返回值
  Input:        - pFileName: 文件名
                - nbytes: 返回值缓存长度
                - pRegex: 正则表达式
  Output:       - pLine: 返回值
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetFileOneOutputMatch(char *pFilename, char *pLine, 
                              int nbytes, char *pRegex);



/*******************************************************************************
  Function:     SYS_GetFileOutput
  Description:  获取文件中的内容 
  Input:        - pFileName: 文件名
                - nbytes: 返回值缓存长度
                - pNum: 最大返回值行数
  Output:       - pList: 返回值数组
                - pNum: 实际返回值行数
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetFileOutput(char *pFileName, char *pList, int nbytes, int *pNum);


/*******************************************************************************
  Function:     SYS_GetFileOneOutput
  Description:  获取文件中的第一行内容 
  Input:        - pFileName: 文件名
                - nbytes: 返回值缓存长度
                - pNum: 最大返回值行数
  Output:       - pList: 返回值数组
                - pNum: 实际返回值行数
  Return:       0: 成功
                -1: 失败
  Others:       无
*******************************************************************************/
int SYS_GetFileOneOutput(char *pFileName, char *pLine, int nbytes);


#ifdef __cplusplus
}
#endif
#endif /* SYS_MISC_H  */

